JITã³ã³ãã€ã«ã®ã¡ãªããã課é¡ã圹å²ãæ¢ãã倿§ãªã¢ãŒããã¯ãã£ã§ã³ãŒããåçã«æé©åããæ¹æ³ã解説ããŸãã
JITïŒãžã£ã¹ãã€ã³ã¿ã€ã ïŒã³ã³ãã€ã«ïŒåçæé©åã®è©³çŽ°è§£èª¬
é²åãç¶ãããœãããŠã§ã¢éçºã®äžçã«ãããŠãããã©ãŒãã³ã¹ã¯äŸç¶ãšããŠéèŠãªèŠçŽ ã§ããJITïŒãžã£ã¹ãã€ã³ã¿ã€ã ïŒã³ã³ãã€ã«ã¯ãã€ã³ã¿ããªã¿èšèªã®æè»æ§ãšã³ã³ãã€ã«èšèªã®é床ãšã®éã®ã®ã£ãããåããããã®éèŠãªæè¡ãšããŠç»å ŽããŸããããã®å æ¬çãªã¬ã€ãã§ã¯ãJITã³ã³ãã€ã«ã®è€éãããã®å©ç¹ã課é¡ããããŠçŸä»£ã®ãœãããŠã§ã¢ã·ã¹ãã ã«ããããã®åè¶ãã圹å²ã«ã€ããŠæ¢ããŸãã
JITïŒãžã£ã¹ãã€ã³ã¿ã€ã ïŒã³ã³ãã€ã«ãšã¯äœãïŒ
JITã³ã³ãã€ã«ã¯ãåçãã©ã³ã¹ã¬ãŒã·ã§ã³ãšãåŒã°ããã³ãŒããå®è¡åïŒAOT - äºåã³ã³ãã€ã«ãªã©ïŒã§ã¯ãªããå®è¡æã«ã³ã³ãã€ã«ãããã³ã³ãã€ã«æè¡ã§ãããã®ã¢ãããŒãã¯ãã€ã³ã¿ããªã¿ãšåŸæ¥ã®ã³ã³ãã€ã©ã®äž¡æ¹ã®å©ç¹ãçµã¿åãããããšãç®æããŠããŸããã€ã³ã¿ããªã¿èšèªã¯ãã©ãããã©ãŒã ã®ç¬ç«æ§ãšè¿ éãªéçºãµã€ã¯ã«ãæäŸããŸããããã°ãã°å®è¡é床ãé ããªããšããåé¡ããããŸããã³ã³ãã€ã«èšèªã¯åªããããã©ãŒãã³ã¹ãæäŸããŸãããéåžžãããè€éãªãã«ãããã»ã¹ãå¿ èŠãšããç§»æ€æ§ãäœããªããŸãã
JITã³ã³ãã€ã©ã¯ãã©ã³ã¿ã€ã ç°å¢ïŒäŸïŒJavaä»®æ³ãã·ã³ - JVMã.NETå ±éèšèªã©ã³ã¿ã€ã - CLRïŒå ã§åäœãããã€ãã³ãŒããäžé衚çŸïŒIRïŒããã€ãã£ããªãã·ã³ã³ãŒãã«åçã«å€æããŸããã³ã³ãã€ã«ããã»ã¹ã¯ã©ã³ã¿ã€ã ã®æ¯ãèãã«åºã¥ããŠããªã¬ãŒãããããã©ãŒãã³ã¹åäžãæå€§åããããã«ãé »ç¹ã«å®è¡ãããã³ãŒãã»ã°ã¡ã³ãïŒããããã¹ãããããšããŠç¥ãããïŒã«çŠç¹ãåœãŠãŸãã
JITã³ã³ãã€ã«ã®ããã»ã¹ïŒã¹ããããã€ã¹ãããã®æŠèŠ
JITã³ã³ãã€ã«ã®ããã»ã¹ã¯ãéåžžã以äžã®æ®µéãå«ã¿ãŸãïŒ- ã³ãŒãã®èªã¿èŸŒã¿ãšè§£æïŒ ã©ã³ã¿ã€ã ç°å¢ãããã°ã©ã ã®ãã€ãã³ãŒããIRãèªã¿èŸŒã¿ãããã°ã©ã ã®æ§é ãšæå³ãçè§£ããããã«è§£æããŸãã
- ãããã¡ã€ãªã³ã°ãšãããã¹ãããã®æ€åºïŒ JITã³ã³ãã€ã©ã¯ã³ãŒãã®å®è¡ãç£èŠããã«ãŒãã颿°ãã¡ãœãããªã©ãé »ç¹ã«å®è¡ãããã³ãŒãã»ã¯ã·ã§ã³ãç¹å®ããŸãããã®ãããã¡ã€ãªã³ã°ã¯ãã³ã³ãã€ã©ãæãããã©ãŒãã³ã¹ã«éèŠãªé åã«æé©åã®åŽåãéäžãããã®ã«åœ¹ç«ã¡ãŸãã
- ã³ã³ãã€ã«ïŒ ãããã¹ããããç¹å®ããããšãJITã³ã³ãã€ã©ã¯å¯Ÿå¿ãããã€ãã³ãŒããIRããåºç€ãšãªãããŒããŠã§ã¢ã¢ãŒããã¯ãã£ã«ç¹æã®ãã€ãã£ããã·ã³ã³ãŒãã«å€æããŸãããã®å€æã«ã¯ãçæãããã³ãŒãã®å¹çãåäžãããããã®æ§ã ãªæé©åæè¡ãå«ãŸããå ŽåããããŸãã
- ã³ãŒããã£ãã·ã³ã°ïŒ ã³ã³ãã€ã«ããããã€ãã£ãã³ãŒãã¯ã³ãŒããã£ãã·ã¥ã«ä¿åãããŸããåãã³ãŒãã»ã°ã¡ã³ãã®ãã®åŸã®å®è¡ã§ã¯ããã£ãã·ã¥ããããã€ãã£ãã³ãŒããçŽæ¥å©çšã§ãããããç¹°ãè¿ãã³ã³ãã€ã«ããå¿ èŠããªããªããŸãã
- æé©åè§£é€ïŒãæé©åïŒïŒ å Žåã«ãã£ãŠã¯ãJITã³ã³ãã€ã©ã以åã«ã³ã³ãã€ã«ããã³ãŒããæé©åè§£é€ããå¿ èŠããããŸããããã¯ãã³ã³ãã€ã«äžã«è¡ãããä»®å®ïŒäŸïŒããŒã¿åãåå²ã®ç¢ºçã«é¢ããä»®å®ïŒãå®è¡æã«ç¡å¹ã§ããããšã倿ããå Žåã«çºçããŸããæé©åè§£é€ã«ã¯ãå ã®ãã€ãã³ãŒããIRã«æ»ããããæ£ç¢ºãªæ å ±ã§åã³ã³ãã€ã«ããããšãå«ãŸããŸãã
JITã³ã³ãã€ã«ã®å©ç¹
JITã³ã³ãã€ã«ã¯ãåŸæ¥ã®ã€ã³ã¿ããªã¿ãäºåã³ã³ãã€ã«ã«æ¯ã¹ãŠãããã€ãã®å€§ããªå©ç¹ãæäŸããŸãïŒ
- ããã©ãŒãã³ã¹ã®åäžïŒ å®è¡æã«ã³ãŒããåçã«ã³ã³ãã€ã«ããããšã§ãJITã³ã³ãã€ã©ã¯ã€ã³ã¿ããªã¿ã«æ¯ã¹ãŠããã°ã©ã ã®å®è¡é床ãå€§å¹ ã«åäžãããããšãã§ããŸããããã¯ããã€ãã£ããã·ã³ã³ãŒããè§£éããããã€ãã³ãŒããããã¯ããã«é«éã«å®è¡ãããããã§ãã
- ãã©ãããã©ãŒã ç¬ç«æ§ïŒ JITã³ã³ãã€ã«ã«ãããããã°ã©ã ããã©ãããã©ãŒã ã«äŸåããªãèšèªïŒäŸïŒJavaãC#ïŒã§èšè¿°ããå®è¡æã«ã¿ãŒã²ãããã©ãããã©ãŒã ã«ç¹æã®ãã€ãã£ãã³ãŒãã«ã³ã³ãã€ã«ããããšãã§ããŸããããã«ããããäžåºŠæžãã°ãã©ãã§ãå®è¡ã§ãããæ©èœãå¯èœã«ãªããŸãã
- åçæé©åïŒ JITã³ã³ãã€ã©ã¯å®è¡ææ å ±ãæŽ»çšããŠãã³ã³ãã€ã«æã«ã¯äžå¯èœãªæé©åãå®è¡ã§ããŸããäŸãã°ãã³ã³ãã€ã©ã¯å®éã«äœ¿çšãããŠããããŒã¿ã®åããç°ãªãåå²ãåããã確çã«åºã¥ããŠã³ãŒããç¹åãããããšãã§ããŸãã
- èµ·åæéã®ççž®ïŒAOTãšã®æ¯èŒïŒïŒ AOTã³ã³ãã€ã«ã¯é«åºŠã«æé©åãããã³ãŒããçæã§ããŸãããèµ·åæéãé·ããªãå¯èœæ§ããããŸããJITã³ã³ãã€ã«ã¯ãå¿ èŠãªãšãã«ã®ã¿ã³ãŒããã³ã³ãã€ã«ããããšã§ãããéãåæèµ·åäœéšãæäŸã§ããŸããå€ãã®çŸä»£ã®ã·ã¹ãã ã§ã¯ãèµ·åæéãšããŒã¯ããã©ãŒãã³ã¹ã®ãã©ã³ã¹ãåãããã«ãJITãšAOTã®äž¡æ¹ã®ãã€ããªããã¢ãããŒãã䜿çšãããŠããŸãã
JITã³ã³ãã€ã«ã®èª²é¡
ãã®å©ç¹ã«ãããããããJITã³ã³ãã€ã«ã«ã¯ããã€ãã®èª²é¡ããããŸãïŒ
- ã³ã³ãã€ã«ã®ãªãŒããŒãããïŒ å®è¡æã«ã³ãŒããã³ã³ãã€ã«ããããã»ã¹ã¯ãªãŒããŒãããã䌎ããŸããJITã³ã³ãã€ã©ã¯ããã€ãã£ãã³ãŒãã®åæãæé©åãçæã«æéãè²»ããå¿ èŠããããŸãããã®ãªãŒããŒãããã¯ãç¹ã«é »ç¹ã«å®è¡ãããªãã³ãŒãã®ããã©ãŒãã³ã¹ã«æªåœ±é¿ãäžããå¯èœæ§ããããŸãã
- ã¡ã¢ãªæ¶è²»ïŒ JITã³ã³ãã€ã©ã¯ãã³ã³ãã€ã«ããããã€ãã£ãã³ãŒããã³ãŒããã£ãã·ã¥ã«ä¿åããããã«ã¡ã¢ãªãå¿ èŠãšããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³å šäœã®ã¡ã¢ãªãããããªã³ããå¢å ããå¯èœæ§ããããŸãã
- è€éãïŒ JITã³ã³ãã€ã©ã®å®è£ ã¯è€éãªã¿ã¹ã¯ã§ãããã³ã³ãã€ã©èšèšãã©ã³ã¿ã€ã ã·ã¹ãã ãããŒããŠã§ã¢ã¢ãŒããã¯ãã£ã«é¢ããå°éç¥èãå¿ èŠã§ãã
- ã»ãã¥ãªãã£äžã®æžå¿µïŒ åçã«çæãããã³ãŒãã¯ãæœåšçã«ã»ãã¥ãªãã£ã®è匱æ§ãåŒãèµ·ããå¯èœæ§ããããŸããJITã³ã³ãã€ã©ã¯ãæªæã®ããã³ãŒããæ³šå ¥ããããå®è¡ããããããã®ãé²ãããã«ãæ éã«èšèšãããªããã°ãªããŸããã
- æé©åè§£é€ã®ã³ã¹ãïŒ æé©åè§£é€ãçºçãããšãã·ã¹ãã ã¯ã³ã³ãã€ã«ãããã³ãŒããç Žæ£ããŠã€ã³ã¿ããªã¿ã¢ãŒãã«æ»ããªããã°ãªããããããå€§å¹ ãªããã©ãŒãã³ã¹äœäžãåŒãèµ·ããå¯èœæ§ããããŸããæé©åè§£é€ãæå°éã«æããããšã¯ãJITã³ã³ãã€ã©èšèšã®éèŠãªåŽé¢ã§ãã
JITã³ã³ãã€ã«ã®å®çšäŸ
JITã³ã³ãã€ã«ã¯ãæ§ã ãªãœãããŠã§ã¢ã·ã¹ãã ãããã°ã©ãã³ã°èšèªã§åºã䜿çšãããŠããŸãïŒ
- Javaä»®æ³ãã·ã³ïŒJVMïŒïŒ JVMã¯JITã³ã³ãã€ã©ã䜿çšããŠJavaãã€ãã³ãŒãããã€ãã£ããã·ã³ã³ãŒãã«å€æããŸããæã人æ°ã®ããJVMå®è£ ã§ããHotSpot VMã«ã¯ãåºç¯å²ã®æé©åãå®è¡ããé«åºŠãªJITã³ã³ãã€ã©ãå«ãŸããŠããŸãã
- .NETå ±éèšèªã©ã³ã¿ã€ã ïŒCLRïŒïŒ CLRã¯JITã³ã³ãã€ã©ã䜿çšããŠå ±éäžéèšèªïŒCILïŒã³ãŒãããã€ãã£ãã³ãŒãã«å€æããŸãã.NET Frameworkãš.NET Coreã¯ããããŒãžãã³ãŒãã®å®è¡ã®ããã«CLRã«äŸåããŠããŸãã
- JavaScriptãšã³ãžã³ïŒ V8ïŒChromeãšNode.jsã§äœ¿çšïŒãSpiderMonkeyïŒFirefoxã§äœ¿çšïŒãªã©ã®çŸä»£ã®JavaScriptãšã³ãžã³ã¯ã髿§èœãéæããããã«JITã³ã³ãã€ã«ãå©çšããŠããŸãããããã®ãšã³ãžã³ã¯ãJavaScriptã³ãŒããåçã«ãã€ãã£ããã·ã³ã³ãŒãã«ã³ã³ãã€ã«ããŸãã
- PythonïŒ Pythonã¯äŒçµ±çã«ã€ã³ã¿ããªã¿èšèªã§ãããPyPyãNumbaãªã©ãPythonçšã®ããã€ãã®JITã³ã³ãã€ã©ãéçºãããŠããŸãããããã®ã³ã³ãã€ã©ã¯ãç¹ã«æ°å€èšç®ã«ãããŠPythonã³ãŒãã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
- LuaJITïŒ LuaJITã¯ãLuaã¹ã¯ãªããèšèªçšã®é«æ§èœJITã³ã³ãã€ã©ã§ããã²ãŒã éçºãçµèŸŒã¿ã·ã¹ãã ã§åºã䜿çšãããŠããŸãã
- GraalVMïŒ GraalVMã¯ãåºç¯å²ã®ããã°ã©ãã³ã°èšèªããµããŒãããé«åºŠãªJITã³ã³ãã€ã«æ©èœãæäŸãããŠãããŒãµã«ä»®æ³ãã·ã³ã§ããJavaãJavaScriptãPythonãRubyãRãªã©ã®èšèªãå®è¡ããããã«äœ¿çšã§ããŸãã
JIT vs. AOTïŒæ¯èŒåæ
JITïŒãžã£ã¹ãã€ã³ã¿ã€ã ïŒã³ã³ãã€ã«ãšAOTïŒäºåã³ã³ãã€ã«ïŒã¯ãã³ãŒãã³ã³ãã€ã«ã«å¯Ÿãã2ã€ã®ç°ãªãã¢ãããŒãã§ãã以äžã«ãã®äž»ãªç¹åŸŽãæ¯èŒããŸãïŒ
| ç¹åŸŽ | JITïŒãžã£ã¹ãã€ã³ã¿ã€ã ïŒ | AOTïŒäºåã³ã³ãã€ã«ïŒ |
|---|---|---|
| ã³ã³ãã€ã«æé | å®è¡æ | ãã«ãæ |
| ãã©ãããã©ãŒã ç¬ç«æ§ | é«ã | äœãïŒåãã©ãããã©ãŒã ããšã«ã³ã³ãã€ã«ãå¿ èŠïŒ |
| èµ·åæé | éãïŒåæïŒ | é ãïŒäºåã®å®å šãªã³ã³ãã€ã«ã®ããïŒ |
| ããã©ãŒãã³ã¹ | æœåšçã«ããé«ãïŒåçæé©åïŒ | äžè¬çã«è¯å¥œïŒéçæé©åïŒ |
| ã¡ã¢ãªæ¶è²» | é«ãïŒã³ãŒããã£ãã·ã¥ïŒ | äœã |
| æé©åã®ç¯å² | åçïŒå®è¡ææ å ±ãå©çšå¯èœïŒ | éçïŒã³ã³ãã€ã«ææ å ±ã«éå®ïŒ |
| ãŠãŒã¹ã±ãŒã¹ | Webãã©ãŠã¶ãä»®æ³ãã·ã³ãåçèšèª | çµèŸŒã¿ã·ã¹ãã ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãã²ãŒã éçº |
äŸïŒ ã¯ãã¹ãã©ãããã©ãŒã ã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãèããŠã¿ãŸããããJavaScriptãšJITã³ã³ãã€ã©ã掻çšããReact Nativeã®ãããªãã¬ãŒã ã¯ãŒã¯ã䜿çšãããšãéçºè ã¯äžåºŠã³ãŒããæžããŠiOSãšAndroidã®äž¡æ¹ã«å±éã§ããŸããäžæ¹ããã€ãã£ãã¢ãã€ã«éçºïŒäŸïŒiOSçšã®SwiftãAndroidçšã®KotlinïŒã¯ãéåžžãåãã©ãããã©ãŒã åãã«é«åºŠã«æé©åãããã³ãŒããçæããããã«AOTã³ã³ãã€ã«ã䜿çšããŸãã
JITã³ã³ãã€ã©ã§äœ¿çšãããæé©åæè¡
JITã³ã³ãã€ã©ã¯ãçæãããã³ãŒãã®ããã©ãŒãã³ã¹ãåäžãããããã«ãåºç¯å²ã®æé©åæè¡ãæ¡çšããŠããŸããäžè¬çãªæè¡ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- ã€ã³ã©ã€ã³åïŒ é¢æ°åŒã³åºãã颿°ã®å®éã®ã³ãŒãã«çœ®ãæããããšã§ã颿°åŒã³åºãã«é¢é£ãããªãŒããŒããããåæžããŸãã
- ã«ãŒãå±éïŒ ã«ãŒãæ¬äœãè€æ°åè€è£œããŠã«ãŒããå±éããã«ãŒãã®ãªãŒããŒããããåæžããŸãã
- 宿°äŒæïŒ 倿°ããã®å®æ°å€ã«çœ®ãæãããããªãæé©åãå¯èœã«ããŸãã
- ãããã³ãŒãåé€ïŒ 決ããŠå®è¡ãããªãã³ãŒããåé€ããã³ãŒããµã€ãºãåæžããŠããã©ãŒãã³ã¹ãåäžãããŸãã
- å ±ééšååŒåé€ïŒ åé·ãªèšç®ãç¹å®ããŠåé€ããå®è¡ãããåœä»€ã®æ°ãæžãããŸãã
- åç¹åïŒ äœ¿çšãããŠããããŒã¿ã®åã«åºã¥ããŠç¹åããã³ãŒããçæããããå¹ççãªæäœãå¯èœã«ããŸããäŸãã°ãJITã³ã³ãã€ã©ã倿°ãåžžã«æŽæ°ã§ããããšãæ€åºããå Žåãæ±çšçãªåœä»€ã®ä»£ããã«æŽæ°å°çšã®åœä»€ã䜿çšã§ããŸãã
- åå²äºæž¬ïŒ æ¡ä»¶åå²ã®çµæãäºæž¬ããäºæž¬ãããçµæã«åºã¥ããŠã³ãŒããæé©åããŸãã
- ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®æé©åïŒ ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¢ã«ãŽãªãºã ãæé©åããŠãäžæåæ¢ãæå°éã«æããã¡ã¢ãªç®¡çã®å¹çãåäžãããŸãã
- ãã¯ãã«åïŒSIMDïŒïŒ åäžåœä»€è€æ°ããŒã¿ïŒSIMDïŒåœä»€ã䜿çšããŠãè€æ°ã®ããŒã¿èŠçŽ ã«å¯ŸããŠåæã«æäœãå®è¡ããããŒã¿äžŠåèšç®ã®ããã©ãŒãã³ã¹ãåäžãããŸãã
- ææ©çæé©åïŒ å®è¡æã®æ¯ãèãã«é¢ããä»®å®ã«åºã¥ããŠã³ãŒããæé©åããŸããä»®å®ãç¡å¹ã§ããããšã倿ããå Žåãã³ãŒãã¯æé©åè§£é€ãããå¿ èŠããããŸãã
JITã³ã³ãã€ã«ã®æªæ¥
JITã³ã³ãã€ã«ã¯é²åãç¶ããçŸä»£ã®ãœãããŠã§ã¢ã·ã¹ãã ã«ãããŠéèŠãªåœ¹å²ãæãããŠããŸããããã€ãã®ãã¬ã³ããJITæè¡ã®æªæ¥ã圢äœã£ãŠããŸãïŒ
- ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®å©çšå¢å ïŒ JITã³ã³ãã€ã©ã¯ãSIMDåœä»€ãå°çšåŠçãŠãããïŒäŸïŒGPUãTPUïŒãªã©ã®ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³æ©èœããŸããŸã掻çšããããã©ãŒãã³ã¹ãããã«åäžãããŠããŸãã
- æ©æ¢°åŠç¿ãšã®çµ±åïŒ JITã³ã³ãã€ã©ã®æå¹æ§ãåäžãããããã«ãæ©æ¢°åŠç¿æè¡ã䜿çšãããŠããŸããäŸãã°ãæ©æ¢°åŠç¿ã¢ãã«ãèšç·ŽããŠãã©ã®ã³ãŒãã»ã¯ã·ã§ã³ãæé©åããæãæ©æµãåããå¯èœæ§ãé«ãããäºæž¬ããããJITã³ã³ãã€ã©èªäœã®ãã©ã¡ãŒã¿ãæé©åãããããããšãã§ããŸãã
- æ°ããããã°ã©ãã³ã°èšèªãšãã©ãããã©ãŒã ã®ãµããŒãïŒ JITã³ã³ãã€ã«ã¯æ°ããããã°ã©ãã³ã°èšèªããã©ãããã©ãŒã ããµããŒãããããã«æ¡åŒµãããŠãããéçºè ãããåºç¯å²ã®ç°å¢ã§é«æ§èœãªã¢ããªã±ãŒã·ã§ã³ãèšè¿°ã§ããããã«ãªã£ãŠããŸãã
- JITãªãŒããŒãããã®åæžïŒ JITã³ã³ãã€ã«ã«é¢é£ãããªãŒããŒããããåæžããããåºç¯å²ã®ã¢ããªã±ãŒã·ã§ã³ã§ããå¹ççã«ããããã®ç ç©¶ãé²è¡äžã§ããããã«ã¯ãããé«éãªã³ã³ãã€ã«ãšããå¹ççãªã³ãŒããã£ãã·ã³ã°ã®ããã®æè¡ãå«ãŸããŸãã
- ããé«åºŠãªãããã¡ã€ãªã³ã°ïŒ ãããã¹ããããããè¯ãç¹å®ããæé©åã®æ±ºå®ãå°ãããã«ãããè©³çŽ°ã§æ£ç¢ºãªãããã¡ã€ãªã³ã°æè¡ãéçºãããŠããŸãã
- ãã€ããªããJIT/AOTã¢ãããŒãïŒ JITãšAOTã³ã³ãã€ã«ã®çµã¿åãããããäžè¬çã«ãªããéçºè ãèµ·åæéãšããŒã¯ããã©ãŒãã³ã¹ã®ãã©ã³ã¹ãåãããšãã§ããããã«ãªã£ãŠããŸããäŸãã°ãäžéšã®ã·ã¹ãã ã§ã¯ãé »ç¹ã«äœ¿çšãããã³ãŒãã«ã¯AOTã³ã³ãã€ã«ã䜿çšããããŸãäžè¬çã§ãªãã³ãŒãã«ã¯JITã³ã³ãã€ã«ã䜿çšããå ŽåããããŸãã
éçºè åãã®å®çšçãªæŽå¯
éçºè ãJITã³ã³ãã€ã«ã广çã«æŽ»çšããããã®å®çšçãªæŽå¯ãããã€ã玹ä»ããŸãïŒ
- 䜿çšèšèªãšã©ã³ã¿ã€ã ã®ããã©ãŒãã³ã¹ç¹æ§ãçè§£ããïŒ åèšèªãšã©ã³ã¿ã€ã ã·ã¹ãã ã«ã¯ãããããé·æãšçæãæã€ç¬èªã®JITã³ã³ãã€ã©å®è£ ããããŸãããããã®ç¹æ§ãçè§£ããããšã§ãããæé©åãããããã³ãŒããæžãããšãã§ããŸãã
- ã³ãŒãããããã¡ã€ãªã³ã°ããïŒ ãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠã³ãŒãå ã®ãããã¹ããããç¹å®ãããããã®é åã«æé©åã®åŽåãéäžãããŸããã»ãšãã©ã®çŸä»£ã®IDEãšã©ã³ã¿ã€ã ç°å¢ã¯ãããã¡ã€ãªã³ã°ããŒã«ãæäŸããŠããŸãã
- å¹ççãªã³ãŒããæžãïŒ äžèŠãªãªããžã§ã¯ãã®äœæãé¿ãããé©åãªããŒã¿æ§é ã䜿çšãããã«ãŒãã®ãªãŒããŒããããæå°éã«æãããªã©ãå¹ççãªã³ãŒããæžãããã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ãããé«åºŠãªJITã³ã³ãã€ã©ããã£ãŠããè³ªã®æªãã³ãŒãã¯ããã©ãŒãã³ã¹ãäœããªããŸãã
- å°éã©ã€ãã©ãªã®äœ¿çšãæ€èšããïŒ æ°å€èšç®ãããŒã¿åæãªã©ã®å°éã©ã€ãã©ãªã¯ãJITã³ã³ãã€ã«ã广çã«æŽ»çšã§ããé«åºŠã«æé©åãããã³ãŒããå«ãã§ããããšããããããŸããäŸãã°ãPythonã§NumPyã䜿çšãããšãæšæºã®Pythonã«ãŒãã䜿çšããã®ã«æ¯ã¹ãŠæ°å€èšç®ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸãã
- ã³ã³ãã€ã©ãã©ã°ã詊ãïŒ äžéšã®JITã³ã³ãã€ã©ã¯ãæé©åããã»ã¹ã調æŽããããã«äœ¿çšã§ããã³ã³ãã€ã©ãã©ã°ãæäŸããŠããŸãããããã®ãã©ã°ã詊ããŠãããã©ãŒãã³ã¹ãåäžãããã©ããã確èªããŠãã ããã
- æé©åè§£é€ã«æ³šæããïŒ é »ç¹ãªå倿Žãäºæž¬äžèœãªåå²ãªã©ãæé©åè§£é€ãåŒãèµ·ãããããã³ãŒããã¿ãŒã³ã¯é¿ããŠãã ããã
- 培åºçã«ãã¹ãããïŒ æé©åãå®éã«ããã©ãŒãã³ã¹ãåäžããããã°ãå°å ¥ããŠããªãããšã確èªããããã«ãåžžã«ã³ãŒãã培åºçã«ãã¹ãããŠãã ããã
çµè«
JITïŒãžã£ã¹ãã€ã³ã¿ã€ã ïŒã³ã³ãã€ã«ã¯ããœãããŠã§ã¢ã·ã¹ãã ã®ããã©ãŒãã³ã¹ãåäžãããããã®åŒ·åãªæè¡ã§ããå®è¡æã«ã³ãŒããåçã«ã³ã³ãã€ã«ããããšã«ãããJITã³ã³ãã€ã©ã¯ã€ã³ã¿ããªã¿èšèªã®æè»æ§ãšã³ã³ãã€ã«èšèªã®é床ãäž¡ç«ãããããšãã§ããŸããJITã³ã³ãã€ã«ã«ã¯ããã€ãã®èª²é¡ããããŸããããã®å©ç¹ã«ãããçŸä»£ã®ä»®æ³ãã·ã³ãWebãã©ãŠã¶ããã®ä»ã®ãœãããŠã§ã¢ç°å¢ã«ãããŠéèŠãªæè¡ãšãªã£ãŠããŸããããŒããŠã§ã¢ãšãœãããŠã§ã¢ãé²åãç¶ããäžã§ãJITã³ã³ãã€ã«ã¯ééããªãç ç©¶éçºã®éèŠãªåéã§ããç¶ããéçºè ããŸããŸãå¹ççã§é«æ§èœãªã¢ããªã±ãŒã·ã§ã³ãäœæããããšãå¯èœã«ããã§ãããã